home *** CD-ROM | disk | FTP | other *** search
Wrap
; ; Install_ToolManager V3.1 ; ; ToolManager Installer script ; ; Copyright (C) 1990-98 Stefan Becker ; ; This source code is for educational purposes only. You may study it ; and copy ideas or algorithms from it for your own projects. It is ; not allowed to use any of the source codes (in full or in parts) ; in other programs. Especially it is not allowed to create variants ; of ToolManager or ToolManager-like programs from this source code. ; ;----------------------------------------------------------------------------- ; ; User-defined procedures ; ;----------------------------------------------------------------------------- ; ; Cleanup routine (procedure P_Cleanup ( (delete "ENV:TM_locale_#?" (safe)) (delete "ENV:TM_language#?" (safe)) ) ) ;----------------------------------------------------------------------------- ; ; Get localized text ; ; Inputs: variable (string) Environment variable ; default (string) Default english text ; (procedure P_GetText #arg_GT_variable #arg_GT_default ( (set #local_GT_var (cat "TM_locale_" #arg_GT_variable)) (if (exists (cat "ENV:" #local_GT_var)) (getenv #local_GT_var) (cat #arg_GT_default) ) ) ) ; ;----------------------------------------------------------------------------- ; ; Initialize installer texts ; (procedure P_InitLocale ( ; Set english default texts first (set #text_welcome (cat "\n" "Welcome to ToolManager 3.1\n\n" "This installation routine will install the ToolManager on your system.\n\n" "ToolManager 2.x installations will be updated for the new version.\n\n" "For new users there is also a small demo at the end of the installation.\n\n" "You have choosen english as your default language." )) (set #text_old_toolmanager "Do you have ToolManager running?\n\nIf the starter for the old ToolManager is not installed in SYS:WBStartup then stop ToolManager now and answer with 'No'.") (set #help_old_toolmanager (cat "Answer yes if ToolManager is currently running on your system. " "ToolManager must not be running during the installation! " "It will be automatically stopped if you answer with yes." )) (set #text_stop_old "Stopping old ToolManager...") (set #text_install_library "Install toolmanager.library") (set #help_install_library "The library is the most important part of ToolManager. It has to be installed in order to use ToolManager.") (set #text_install_prefs "Install the preferences editor") (set #help_install_prefs "The preferences editor allows you to configure ToolManager.\n\nNOTE: MUI 3.6 (or better) is required to run the preferences editor!") (set #text_install_starter "Install the ToolManager starter") (set #help_install_starter "If the starter is installed in SYS:WBStartup then ToolManager will be started automatically during the startup of your system.") (set #text_install "Install ") (set #text_ask_languages "Install languages?") (set #help_ask_languages "Choose yes if you want to install the translations for the ToolManager texts.") (set #text_install_languages "Install languages") (set #help_install_languages "Choose the languages which you want to install.") (set #help_install_langdir "Choose the directory where the language catalogs are located on your system. Each language has a subdirectory in this directory.") (set #text_ask_guides "Install AmigaGuide documentation?") (set #help_ask_guides "Choose yes if you want to install the ToolManager documentation in AmigaGuide format.") (set #text_install_guides "Install AmigaGuide documentation") (set #help_install_guides "Choose the languages for which you want to install the AmigaGuide documentation.") (set #help_install_guidedir "Choose the directory where the AmigaGuide documentations are located on your system. Each language has a subdirectory in this directory.") (set #text_read_guides "Do you want to read the documentation now?") (set #help_read_guides "Choose yes to read the documentation in AmigaGuide format in your preferred language.") (set #text_reading_guides "Reading documentation...") (set #text_ask_extras "Install additional packages?") (set #help_ask_extras "These additional packages are required by ToolManager. You may skip these part if the files are already installed on your system.") (set #text_extras_stefanb "Install dospath.library and wbstart.library") (set #help_extras_stefanb "Installs libraries from the DOSPath and WBStart packages.\n\nCopyright (C) Stefan Becker") (set #text_extras_kmel "Install Pop* MUI custom classes") (set #help_extras_kmel "Installs additional MUI custom classes.\n\nCopyright (C) Klaus Melchior") (set #text_check_header "The following required library is missing on your system:\n\nFile name: ") (set #text_check_version "\n\nRequired version: ") (set #text_check_footer "\n\nPlease read the documentation again, fetch the missing archive from the ToolManager distribution, e.g. the Extras archive, and re-run the installation.") (set #text_convert "Convert old configuration?") (set #help_convert "The configuration file format has changed for ToolManager 3.x. A program will convert your old configuration to the new format.") (set #text_converting "Converting configuration...") (set #text_disclaimer "Showing disclaimer...") (set #text_start_new "Start new ToolManager?") (set #help_start_new "Choose yes if you want to try the new ToolManager now.") (set #text_starting_new "Starting new ToolManager...") (set #text_start_demo "Start ToolManager demonstration?") (set #help_start_demo "Choose yes if you want to try the ToolManager demo now.") (set #text_starting_demo "Starting ToolManager demo...") (set #text_stop_demo "Stop ToolManager demo...") (set #text_complete "\n\nToolManager 3.1 is now installed on your system.\n\nHave fun!") (set #text_installer "Installer 43.3 or better required!") ; Localize texts If selected language is not "english" (if (<> @language "english") ( ; Copy locale texts to environment variables (execute @language (safe)) ; Get texts (set #text_welcome (P_GetText "text_welcome" #text_welcome)) (set #text_old_toolmanager (P_GetText "text_old_toolmanager" #text_old_toolmanager)) (set #help_old_toolmanager (P_GetText "help_old_toolmanager" #help_old_toolmanager)) (set #text_stop_old (P_GetText "text_stop_old" #text_stop_old)) (set #text_install_library (P_GetText "text_install_library" #text_install_library)) (set #help_install_library (P_GetText "help_install_library" #help_install_library)) (set #text_install_prefs (P_GetText "text_install_prefs" #text_install_prefs)) (set #help_install_prefs (P_GetText "help_install_prefs" #help_install_prefs)) (set #text_install_starter (P_GetText "text_install_starter" #text_install_starter)) (set #help_install_starter (P_GetText "help_install_starter" #help_install_starter)) (set #text_install (P_GetText "text_install" #text_install)) (set #text_ask_languages (P_GetText "text_ask_languages" #text_ask_languages)) (set #help_ask_languages (P_GetText "help_ask_languages" #help_ask_languages)) (set #text_install_languages (P_GetText "text_install_languages" #text_install_languages)) (set #help_install_languages (P_GetText "help_install_languages" #help_install_languages)) (set #help_install_langdir (P_GetText "help_install_langdir" #help_install_langdir)) (set #text_ask_guides (P_GetText "text_ask_guides" #text_ask_guides)) (set #help_ask_guides (P_GetText "help_ask_guides" #help_ask_guides)) (set #text_install_guides (P_GetText "text_install_guides" #text_install_guides)) (set #help_install_guides (P_GetText "help_install_guides" #help_install_guides)) (set #help_install_guidedir (P_GetText "help_install_guidedir" #help_install_guidedir)) (set #text_read_guides (P_GetText "text_read_guides" #text_read_guides)) (set #help_read_guides (P_GetText "help_read_guides" #help_read_guides)) (set #text_reading_guides (P_GetText "text_reading_guides" #text_reading_guides)) (set #text_ask_extras (P_GetText "text_ask_extras" #text_ask_extrass)) (set #help_ask_extras (P_GetText "help_ask_extras" #help_ask_extrass)) (set #text_extras_stefanb (P_GetText "text_extras_stefanb" #text_extras_stefanb)) (set #help_extras_stefanb (P_GetText "help_extras_stefanb" #help_extras_stefanb)) (set #text_extras_kmel (P_GetText "text_extras_kmel" #text_extras_kmel)) (set #help_extras_kmel (P_GetText "help_extras_kmel" #help_extras_kmel)) (set #text_check_header (P_GetText "text_check_header" #text_check_header)) (set #text_check_version (P_GetText "text_check_version" #text_check_version)) (set #text_check_footer (P_GetText "text_check_footer" #text_check_footer)) (set #text_convert (P_GetText "text_convert" #text_convert)) (set #help_convert (P_GetText "help_convert" #help_convert)) (set #text_converting (P_GetText "text_converting" #text_converting)) (set #text_disclaimer (P_GetText "text_disclaimer" #text_disclaimer)) (set #text_start_new (P_GetText "text_start_new" #text_start_new)) (set #help_start_new (P_GetText "help_start_new" #help_start_new)) (set #text_starting_new (P_GetText "text_starting_new" #text_starting_new)) (set #text_start_demo (P_GetText "text_start_demo" #text_start_demo)) (set #help_start_demo (P_GetText "help_start_demo" #help_start_demo)) (set #text_starting_demo (P_GetText "text_starting_demo" #text_starting_demo)) (set #text_stop_demo (P_GetText "text_stop_demo" #text_stop_demo)) (set #text_complete (P_GetText "text_complete" #text_complete)) (set #text_installer (P_GetText "text_installer" #text_installer)) ; Delete environment variables (delete "ENV:TM_locale_#?" (safe)) ) ) ) ) ;----------------------------------------------------------------------------- ; ; Install language dependent files ; ; Inputs: src (string) Source path ; dest (string) Destination path ; lang (string) language ; type (integer) type (0 language, 1 guides) ; (procedure P_InstallLanguage #arg_IL_src #arg_IL_dest #arg_IL_lang #arg_IL_type ( (set #local_IL_source (tackon #arg_IL_src #arg_IL_lang)) (set #local_IL_destination (tackon #arg_IL_dest #arg_IL_lang)) (debug "Source" #local_IL_source "Dest" #local_IL_destination) (if (= #arg_IL_type 0) ( ; Install catalogs (copylib (prompt (cat #text_install "toolmanager.catalog")) (help #help_install_languages) (source (tackon #local_IL_source "toolmanager.catalog")) (dest #local_IL_destination) (optional force askuser) (confirm) ) (copylib (prompt (cat #text_install "toolmanagerprefs.catalog")) (help #help_install_languages) (source (tackon #local_IL_source "toolmanagerprefs.catalog")) (dest #local_IL_destination) (optional force askuser) (confirm) ) ) ( ; Install AmigaGuide document (copyfiles (prompt (cat #text_install "ToolManager.guide")) (help #help_install_guides) (source (tackon #local_IL_source "ToolManager.guide")) (dest #local_IL_destination) (files) (optional force askuser) (confirm) ) ) ) ) ) ;----------------------------------------------------------------------------- ; ; Dynamically create an options menu for languages ; ; Inputs: path (string) Path to scan for language directories ; dest (string) Destination path ; type (integer) Type of installation ; prompt (string) Prompt text ; help (string) Help text ; helpdir (string) Help text for directory selection ; (procedure P_LanguageChoices #arg_LC_path #arg_LC_dest #arg_LC_type #arg_LC_prompt #arg_LC_help #arg_LC_helpdir ( ; Make sure the destination directory is OK for the user (set #arg_LC_dest (askdir (prompt #arg_LC_prompt) (help #arg_LC_helpdir) (default #arg_LC_dest) ) ) ; We have to use environment variables, because "symbolvar" doesn't work (set #local_LC_envname "ENV:TM_language%ld") ; Scan for all language directories in the specified path (set #local_LC_default -1) (set #local_LC_languages 0) (foreach #arg_LC_path "~(#?.info)" ( ; Create environment variable which contains the language name (textfile (dest (#local_LC_envname #local_LC_languages)) (append @each-name) (safe) ) ; Store the index of the default language (if (= @each-name @language) (set #local_LC_default #local_LC_languages)) ; Next language (set #local_LC_languages (+ #local_LC_languages 1)) ) ) (debug "Number of languages in" #arg_LC_path ":" #local_LC_languages) ; Round up number of languages to a multiple of 8 ; Create empty environment variables for padding (set #local_LC_choice #local_LC_languages) (set #local_LC_languages (* (/ (+ #local_LC_languages 7) 8) 8)) (while (< #local_LC_choice #local_LC_languages) ( (textfile (dest (#local_LC_envname #local_LC_choice)) (safe) ) (set #local_LC_choice (+ #local_LC_choice 1)) ) ) ; Ask user which languages to install (8 per page) (set #local_LC_choice 0) (while (< #local_LC_choice #local_LC_languages) ( ; Default language on this page? Set bit mask (if (AND (>= #local_LC_default #local_LC_choice) (< #local_LC_default (+ #local_LC_choice 8))) (set #local_LC_mask (shiftleft 1 (- #local_LC_default #local_LC_choice))) (set #local_LC_mask 0) ) ; Ask user (set #local_LC_mask (askoptions (prompt #arg_LC_prompt) (help #arg_LC_help) (default #local_LC_mask) (choices (cat "\x1b[2p" (getenv (#local_LC_envname #local_LC_choice))) (getenv (#local_LC_envname (+ #local_LC_choice 1))) (getenv (#local_LC_envname (+ #local_LC_choice 2))) (getenv (#local_LC_envname (+ #local_LC_choice 3))) (getenv (#local_LC_envname (+ #local_LC_choice 4))) (getenv (#local_LC_envname (+ #local_LC_choice 5))) (getenv (#local_LC_envname (+ #local_LC_choice 6))) (getenv (#local_LC_envname (+ #local_LC_choice 7))) ) ) ) ; Next 8 languages (set #local_LC_i #local_LC_choice) (set #local_LC_choice (+ #local_LC_choice 8)) ; Call procedure to do the actual copying (while (< #local_LC_i #local_LC_choice) ( ; Current language selected? (if (IN #local_LC_mask 0) ( ; Call installation routine with language as parameter (P_InstallLanguage #arg_LC_path #arg_LC_dest (getenv (#local_LC_envname #local_LC_i)) #arg_LC_type ) ) ) ; Next language (set #local_LC_i (+ #local_LC_i 1)) (set #local_LC_mask (shiftright #local_LC_mask 1)) ) ) ) ) ; Delete environment variables again (delete "ENV:TM_language#?" (safe)) ) ) ;----------------------------------------------------------------------------- ; ; Install language dependent files ; ; No Inputs ; (procedure P_CheckLibraries ( ; Check for required libraries (set #local_CL_i 0) (while ; Get next library name (set #local_CL_library_name (select #local_CL_i "LIBS:toolmanager.library" "LIBS:dospath.library" "MUI:Libs/mui/Listtree.mcc" "MUI:Libs/mui/Pophotkey.mcc" "MUI:Libs/mui/Popport.mcc" "MUI:Libs/mui/Popposition.mcc" "" ) ) ( ; Get required minimum version (0 matches any version) (set #local_CL_library_minversion (select #local_CL_i 4 0 17 0 0 0 ) ) (debug "Checking library" #local_CL_library_name " version " #local_CL_library_minversion) ; Set error flag (set #local_CL_error 1) ; First check that the library exits (if (exists #local_CL_library_name) ; Then check the minimum version (if (>= (/ (getversion #local_CL_library_name) 65536) #local_CL_library_minversion) ; All OK reset error flag (set #local_CL_error 0) ) ) ; Error flag set? (if #local_CL_error (abort #text_check_header #local_CL_library_name #text_check_version #local_CL_library_minversion #text_check_footer ) ) (set #local_CL_i (+ #local_CL_i 1)) ) ) ) ) ;----------------------------------------------------------------------------- ; ; Main "entry" point ; ; Initialize locale (P_InitLocale) (onerror (P_Cleanup)) ; Check installer version (we need at least 43.3) (if (>= @installer-version (+ 3 (* 43 65536))) ( ; Our own welcome message first... (message #text_welcome (all)) ; Now let the user decide how to perform the installation (welcome) (complete 0) ; Remove old ToolManager 2.x (if (= 1 (exists "LIBS:toolmanager.library")) ( (if (askbool (prompt #text_old_toolmanager) (help #help_old_toolmanager) (default 1) ) ( (working #text_stop_old) (run "SYS:WBStartup/ToolManager") ) ) ) ) ; Make sure that the old library is removed from the memory (run "Avail flush") (complete 10) ; Install new library (copylib (prompt #text_install_library) (help #help_install_library) (source "/Libs/toolmanager.library") (dest "LIBS:") (optional force askuser) (confirm) ) (complete 20) ; Install new preferences editor (copyfiles (prompt #text_install_prefs) (help #help_install_prefs) (source "/Prefs/ToolManager") (dest "SYS:Prefs") (files) (optional force askuser) (confirm) (infos) (noposition) ) (complete 30) ; Install new starter (copyfiles (prompt #text_install_starter) (help #help_install_starter) (source "/WBStartup/ToolManager") (dest "SYS:WBStartup") (files) (optional force askuser) (confirm) (infos) (noposition) ) (complete 40) ; Install languages (if (= 2 (exists "/Locale" (noreq))) ( (if (askbool (prompt #text_ask_languages) (help #help_ask_languages) (default 1) ) ( (P_LanguageChoices "/Locale/Catalogs" "LOCALE:Catalogs" 0 #text_install_languages #help_install_languages #help_install_langdir ) ) ) ) ) (complete 50) ; Install AmigaGuide help files (if (askbool (prompt #text_ask_guides) (help #help_ask_guides) (default 1) ) ( (P_LanguageChoices "/Help" "HELP:" 1 #text_install_guides #help_install_guides #help_install_guidedir ) (if (askbool (prompt #text_read_guides) (help #help_read_guides) (default 1) ) ( (working #text_reading_guides) (run (cat "SYS:Utilities/MultiView HELP:" @language "/ToolManager.guide")) ) ) ) ) (complete 55) ; Install additional packages (if (= 1 (exists "/Readme.Extras" (noreq))) ( (if (askbool (prompt #text_ask_extras) (help #help_ask_extras) (default 1) ) ( (copylib (prompt #text_extras_stefanb) (help #help_extras_stefanb) (source "/Libs/dospath.library") (dest "LIBS:") (optional force askuser) (confirm) ) (copylib (prompt #text_extras_stefanb) (help #help_extras_stefanb) (source "/Libs/wbstart.library") (dest "LIBS:") (optional force askuser) (confirm) ) (copylib (prompt #text_extras_kmel) (help #help_extras_kmel) (source "/Libs/MUI/Pophotkey.mcc") (dest "MUI:Libs/mui") (optional force askuser) (confirm) ) (copylib (prompt #text_extras_kmel) (help #help_extras_kmel) (source "/Libs/MUI/Popport.mcc") (dest "MUI:Libs/mui") (optional force askuser) (confirm) ) (copylib (prompt #text_extras_kmel) (help #help_extras_kmel) (source "/Libs/MUI/Popposition.mcc") (dest "MUI:Libs/mui") (optional force askuser) (confirm) ) ) ) ) ) (complete 60) ; Check that all needed libraries are installed (P_CheckLibraries) (complete 65) ; Convert old configuration (if (= 1 (exists "ENVARC:ToolManager.prefs")) ( (if (askbool (prompt #text_convert) (help #help_convert) (default 1) ) ( (working #text_converting) (run "/Prefs/Converter >CON:0/0/640/100/Converter/CLOSE/WAIT") (run "Copy ENVARC:ToolManager.prefs ENV:") ) ) ) ) (complete 70) ; Show disclaimer (working #text_disclaimer) (run "SYS:Utilities/Multiview /Disclaimer" (safe)) (complete 80) ; Start new ToolManager (if (askbool (prompt #text_start_new) (help #help_start_new) (default 1) ) ( (working #text_starting_new) (run "SYS:WBStartup/ToolManager") (complete 90) ; Start demo for new users (if (= 0 (exists "ENV:ToolManager.prefs")) ( (if (askbool (prompt #text_start_demo) (help #help_start_demo) (default 1) ) ( (working #text_starting_demo) (run "Copy /Demo.prefs ENV:ToolManager.prefs") (message #text_stop_demo (all)) (run "delete ENV:ToolManager.prefs") ) ) ) ) (complete 95) ) ) ; We made it... (complete 100) (exit #text_complete (quiet)) ) ( (abort #text_installer) ) ) ;-----------------------------------------------------------------------------